#ifndef SKETCH_H
#define SKETCH_H

#include <vector>

#include "trace.h"
#include "models.h"
#include "scene.h"
#include "modeling.h"
#include "beautification.h"
#include "primitive.h"

class Modeling;

class Sketch{

    protected:
        map<int, Trace> traces;
        
        TraceFactory* traceFactory;
        
    public:
        Sketch(){}
        Sketch(TraceFactory* f){traceFactory = f;}
        ~Sketch();

        void setTraceFactory(TraceFactory* factory);
        
        void addCursor(Cursor &cursor);
        
        void addTrace(Trace &t);
        map<int, Trace>& getTraces();
        void clear();
        
        void beautifyTrace(Trace &trace);
        int processPolygon(int objId);
        
        void drawTraces();
};

#endif /* SKETCH_H */
